
package highvoltage;

import highvoltage.skeletonHelpers.*;

/**
 * Absztrakt szabály osztály. A szabályok többek között egy-egy súlytényezõvel
 * járulnak hozzá az elsõbbségi és sebességi viszonyok kialakításához.
 * 
 * @author Tomi
 * @version 1.0
 * @created 16-márc.-2010 21:08:06
 */
public abstract class Rule implements ISteppable
{

	public Rule()
	{

	}

	/**
	 * A Visitor minta szerinti accept metódus.
	 * 
	 * @param visitor
	 *            Egy IRuleVisitor interfészt megvalósító objektum.
	 */
	public abstract void accept( IRuleVisitor visitor );

	/**
	 * A súlyszámításnál figyelembevett szorzótényezõt adja vissza.
	 * Alapértelmezésben 1-et ad vissza, de a leszármazott osztályok
	 * tetszõlegesen felüldefiniálva képesek módosítani a meghívó jármû súlyát.
	 */
	public float getFactor()
	{
		Logger.print( "Rule::getFactor()", this );
		Logger.ret();

		return 0.0f;
	}

	/**
	 * Órajelre történõ léptetés metódusa.
	 */
	public abstract void step();

}
